// 事件总线
import Vue from 'vue'
const app = new Vue({})



// 实现一
// const listeners = {}
// export default {
//     // 监听某一个事件
//     $on(eventName, handle) {
//         if (!listeners[eventName]) {
//             listeners[eventName] = new Set()
//         }
//         listeners[eventName].add(handle)
//     },
//     // 取消监听
//     $off(eventName, handle) {
//         if (!listeners[eventName]) return;
//         listeners[eventName].delete(handle)
//     },
//     // 触发事件
//     $emit(eventName, ...agrs) {
//         if (!listeners[eventName]) return;
//         for (const event of listeners[eventName]) {
//             event(...agrs)
//         }
//     }
// }

// 实现二
// export default class Bus {
//     constructor() {
//         this.listeners = {}
//     }
//     // 添加监听
//     $on(eventName, handle) {
//         if (!this.listeners[eventName]) return;
//         this.listeners[eventName].delete(handle)
//     }
//     // 取消监听
//     $off(eventName, handle) {
//         if (!this.listeners[eventName]) return;
//         this.listeners[eventName].delete(handle)
//     }
//     // 触发事件
//     $emit(eventName, ...agrs) {
//         if (!this.listeners[eventName]) return;
//         for (const event of this.listeners[eventName]) {
//             event(...agrs)
//         }
//     }
// }


/*
 * 事件名：mainScroll
 * 含义：主区域滚动条位置变化后触发
 * 参数：
 * - 滚动的dom元素，如果是undefined，则表示dom元素已经不存在
 *
 * 事件名：setMainScroll
 * 含义：当需要设置主区域滚动条位置时触发
 * 参数：
 * - 滚动高度
 */

Vue.prototype.$bus = app
export default app